from 项目.面向对象版学员管理系统.student import *
# 管理类
class Manager(object):
    def __init__(self):
        # 列表存储学员信息
        self.students = []
    # 入口方法
    def run(self):
        while True:
            # 显示菜单
            self.show_menu()
            # 输入
            menu_num = input('请输入您的选择：')
            if menu_num == '1':
                self.add()
            elif menu_num == '2':
                self.remove()
            elif menu_num == '3':
                self.update()
            elif menu_num == '4':
                self.select()
            elif menu_num == '5':
                self.selectAll()
            elif menu_num == '6':
                self.save()
            elif menu_num == '7':
                break
            else:
                print('没有该功能')

    # 由于未涉及到对象或者是对象数据的使用
    @staticmethod
    def show_menu():
        print('请选择如下功能')
        print('1：添加学员')
        print('2：删除学员')
        print('3：修改学员')
        print('4：查询学员')
        print('5：显示所有学员')
        print('6：保存学员')
        print('7：退出系统')
    def add(self):
        name = input('请输入学生姓名：')
        tel = input('请输入学生手机号：')
        gender = input('请输入学生性别：')
        # 判断学生姓名是否存在
        for i in self.students:
            if i.name == name:
                # 说明学生姓名存在
                print('该学生信息已添加过了！')
                return
        # 执行添加操作
        student = Student(name, gender, tel)
        self.students.append(student)
        print('添加学生信息成功')
    def remove(self):
        # 判断学生姓名是否存在
        name = input('请输入要删除学生姓名：')
        for i in self.students:
            if i.name == name:
                self.students.remove(i)
                print('删除学生信息成功！')
                return
        print('学生信息不存在！')
    def update(self):
        # 判断学生姓名是否存在
        name = input('请输入要修改学生姓名：')
        for i in self.students:
            if i.name == name:
                # 说明学生姓名存在
                newName = input('请输入新的学生姓名：')
                newTel = int(input('请输入新的学生手机号：'))
                newGender = input('请输入新的学生性别：')
                i.name = newName
                i.tel = newTel
                i.gender = newGender
                print('修改学生信息成功！')
                return
        print('学生信息不存在！')
    def select(self):
        name = input('请输入要查询的学生姓名：')
        for i in self.students:
            if i.name == name:
                # 说明学生姓名存在
                print(i)
                return
        print('学生信息不存在！')
    def selectAll(self):
        print('姓名\t\t\t性别\t手机号')
        for i in self.students:
            print(i.name+'\t\t'+i.gender+'\t\t'+i.tel)
    def save(self):
        f = open('student.data', 'w')
        # 学员对象转换为字典
        new_list = [i.__dict__ for i in self.students]
        f.write(str(new_list))
        f.close()
        print('添加学生信息成功！')
    def load(self):
        # 加载学员信息
        try:
            f = open('student.data')
        except:
            f = open('student.data', 'w')
        else:
            # 将学员信息转为对象
            data = f.read()
            student_list = eval(data)
            self.students = [Student(i['name'], i['gender'], i['tel']) for i in student_list]
        finally:
            f.close()

if __name__ == '__main__':
    manager = Manager()
    manager.load()
    manager.run()